转:Pascal之父Niklaus Wirth:结构化的程序设计

Pascal是大学时代的入门语言,也是造就一代Borland传奇Delphi的经典。作为Pascal之父,Niklaus Wirth率先提出了结构化程序设计思想,并凭借突出的贡献,获得1984年图灵奖。

1967年,当Pascal之父Niklaus Wirth(尼古拉斯·沃斯)编写最后一条Pascal编译器的代码后,他按照惯例为自己的这门语言取了一个数学家的名字——Pascal。这是为了纪念法国著名数学家和物理学家Blaise Pascal(布莱兹·帕斯卡)。

数学家和物理学家Blaise Pascal和他发明的计算机

为什么要纪念Blaise Pascal?因为他是世界上第一台计算机的创造者,你没听错,早在1641年Blaise Pascal就为做税务官的父亲制造了一台计算机,这是世界上第一台手摇计算机,可以计算六位数的加减法。其后十年里他对此继续进行改进,共造出50多台,现在还存有8台。当然,Blaise Pascal最为人所熟知的贡献还是国际压强单位的帕斯卡(Pa)和概率论。

Niklaus Wirth 1934年生于瑞士Winterthur(温特图尔),这是瑞士北部的一个小镇,群山环绕,风景优美;少年时代的Niklaus Wirth与数学家Pascal一样喜欢动手动脑,最大的爱好是组装飞机模型。1958年,Niklaus从苏黎世工学院取得学士学位后来到加拿大的莱维大学深造,之后进入美国加州大学伯克利分校获得博士学位。

Euler和PL360

上世纪六十年代初,Wirth出于一些学术考虑设计了自己的第一个编程语言Euler。自Euler开始,Wirth养成了一个习惯,将自己的学术成果或编程语言以著名数学家的名字命名,Euler就是为了纪念瑞士著名数学家Euler(欧拉)而命名。 Euler采用一种通用类型概念。在Euler中,数组(array),过程(procedure),以及转换(switch)这些量并不是通过标识符(identifier)来定义并命名的:与ALGOL相反,这几个量是和变量处于不同层级的,却与数字、布尔值常数等是同一层级。因此,在传统的数值和逻辑常量之外,Euler还添加了如下类型:

◆reference
◆label
◆symbol
◆list (array)
◆procedure
◆undefined

虽然Euler在学术上非常优秀,但在实用性上考虑并不周。无论如何,Wirth凭借Euler在编译器系统设计方面打造了很好的基础。

接下来,沃思在斯坦福大学定义了另一种语言来描写Algol W的编译器,由此催生了新的语言PL360。PL360是作为辅助工具开发的,却出人意料地在许多地方获得应用。Algol W及PL360的成功奠定了Niklaus Wirth作为程序设计语言专家的地位。

Pascal语言

成名后的Wirth拒绝了斯坦福大学的挽留,于1967年回到瑞士,先在苏黎世大学任职,第二年转到母校苏黎世工学院。当时,计算机软件课程的教学基本通过数学模型、PL360或Basic进行。Wirth认为,这些编程语言无法满足程序设计思维的传递,他计划再开发一个更加适合教学的编程语言。

Niklaus Wirth很快实践了这个想法,不考虑商业用户,单纯面向计算机专业的学生。他在CDC6000上成功设计了一门编程教学语言,他用法国数学家Blaise Pascal命名它。Pascal严格的结构化形式、丰富完备的数据类型、高运行效率和较强的查错能力,大受学生欢迎;由于其适合于由微处理器组成的计算机系统,不久就广泛流传开来。

Pascal语言可以被方便地用于描述各种算法与数据结构。尤其是对于程序设计的初学者,Pascal语言有益于培养良好的程序设计风格和习惯。IOI(国际奥林匹克信息学竞赛)把Pascal语言作为三种程序设计语言之一,在大学中Pascal语言也常常被用作学习数据结构与算法的教学语言。在C语言问世以前,Pascal成为最受欢迎的编程语言之一。

意外收获

另外,作为教学语言被设计的Pascal在商业上也取得了辉煌的成绩。上世纪80年代,Delphi与C#之父Anders Hejlsberg在Borland公司先后设计推出了Turbo Pascal和Delphi。造就了当年的Borland传奇。

1971年,Niklaus Wirth基于自己的开发程序设计语言和编程的实践经验,Wirth首次提出了“结构化程序设计”(Structured Programming)的概念。Wirth提出的这种结构化程序设计方法又称为“自顶向下”或“逐步求精”法,在程序设计领域引发了一场革命,成为其中的一种标准,尤其在后来发展起来的软件工程中获得广泛应用。

Pascal的成功和结构化程序设计思想带来的巨大影响,并没有停止Wirth继续创造性的研究与开发工作。1970年代中期,为适应并发程序设计的需要,Wirth又成功开发了获得广泛应用的Modula语言。后来,参考Alto的经验,他还设计开发了Lilith个人计算机系统。Wirth的学术著作很多,著名的包括《系统程序设计导论》、《算法+数据结构=程序》。除了程序设计语言之外,Wirth在其他方面也有许多创造,如扩充了著名的巴科斯范式,发明了语法图等。凭借突出的个人成就,Niklaus Wirth于1984年获得图灵奖。
<完>